package djboom.materials.display.devices {
	import djboom.materials.core.BitmapDataCore;
	import djboom.materials.display.elements.SimpleSmartMovie;
	import djboom.materials.events.CupEvent;
	import djboom.materials.events.InstructionEvent;

	import com.greensock.TweenLite;
	import com.greensock.easing.Cubic;

	import org.casalib.display.CasaBitmap;
	import org.casalib.util.FrameUtil;

	import flash.display.MovieClip;
	import flash.events.Event;

	/**
	 * Стаканчик для взвешивания.
	 * <br>
	 * 
	 * @author DJ BooM 
	 * @since 01.02.2011
	 * 
	 */

	public class Cup extends SimpleSmartMovie {

		// ----------------------------------------------------------------------------
		// Константы класса.
		// ----------------------------------------------------------------------------

		private static const BACK:String = "cup.Back";

		private static const AUTO_ACTION_CLIP:String = "work3.AutoAction2";

		private static const AUTO_ACTION_LABEL_1:String = "phase1";		private static const AUTO_ACTION_LABEL_2:String = "phase2";

		// ----------------------------------------------------------------------------
		// Свойства класса.
		// ----------------------------------------------------------------------------

		private var _backBitmap:CasaBitmap;
		private var _autoActionClip:MovieClip;

		// ----------------------------------------------------------------------------
		// Конструктор.
		// ----------------------------------------------------------------------------

		public function Cup() {
			super();
			
			_backBitmap = new CasaBitmap(BitmapDataCore.getBitmapData(BACK));
			addChild(_backBitmap);
		}	 

		
		// ----------------------------------------------------------------------------
		// Приватные методы класса.
		// ----------------------------------------------------------------------------

		private function animateComplete():void {
			FrameUtil.removeFrameScript(_autoActionClip, BitmapDataCore.LABEL_COMPLETE);
            
			_autoActionClip.stop();
			_autoActionClip.visible = false;
			removeChild(_autoActionClip);
			_autoActionClip = null;
            
			_backBitmap.visible = true;
            
			dispatchEvent(new InstructionEvent(InstructionEvent.REFRESH));
		}

		private function animateWater():void {
			FrameUtil.removeFrameScript(_autoActionClip, AUTO_ACTION_LABEL_1);
			
			dispatchEvent(new CupEvent(CupEvent.ANIMATE_WATER));
		}

		private function animateCup():void {
			FrameUtil.removeFrameScript(_autoActionClip, AUTO_ACTION_LABEL_2);
			
			TweenLite.to(this, 0.5, {y: "-10", ease: Cubic.easeOut});
		}

		// ----------------------------------------------------------------------------
		// Видимые методы класса.
		// ----------------------------------------------------------------------------
	
		// ----------------------------------------------------------------------------
		// Переопределенные методы.
		// ----------------------------------------------------------------------------

		override public function clearContent(event:Event):void {
			super.clearContent(event);
		}

		
		// ----------------------------------------------------------------------------
		// Обработчики событий.
		// ----------------------------------------------------------------------------
	
		// ----------------------------------------------------------------------------
		// Публичные методы.
		// ----------------------------------------------------------------------------

		public function animate():void {
			_backBitmap.visible = false;
			
			_autoActionClip = BitmapDataCore.getMovieClip(AUTO_ACTION_CLIP);
			addChild(_autoActionClip);
            
			FrameUtil.addFrameScript(_autoActionClip, BitmapDataCore.LABEL_COMPLETE, animateComplete);			FrameUtil.addFrameScript(_autoActionClip, AUTO_ACTION_LABEL_1, animateWater);
			FrameUtil.addFrameScript(_autoActionClip, AUTO_ACTION_LABEL_2, animateCup);
		}


		// ----------------------------------------------------------------------------
		// Методы доступа.
		// ----------------------------------------------------------------------------
	}
}
